<!DOCTYPE html>
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>图书管理系统</title>
    <link href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
    <style>
        nav {
            font-size: 1.5rem;
            background-color: #21D4FD;
            background-image: -webkit-linear-gradient(19deg, #21D4FD 0%, #B721FF 100%);
            background-image: -moz-linear-gradient(19deg, #21D4FD 0%, #B721FF 100%);
            background-image: -o-linear-gradient(19deg, #21D4FD 0%, #B721FF 100%);
            background-image: linear-gradient(19deg, #21D4FD 0%, #B721FF 100%);
        }

        h1 {
            font-size: 2rem;
            color: white;
        }

        li {
            margin: 10px 20px;
        }

        th {
            width: 100px;
        }

        label {
            margin: auto;
            padding-right: 20px;
        }

        .input-group {
            margin-bottom: 10px;
        }
    </style>
</head>
<body>
<nav class="navbar navbar-expand-sm bg-primary navbar-dark">
    <ul class="navbar-nav" sec:authorize="hasRole('ADMIN')">
        <li>
            <h1><a style="color: white; text-decoration: none" th:href="@{/}">博客管理系统</a></h1>
        </li>
        <li class="nav-item">
            <a class="nav-link active" th:href="@{/admin/book/getAll}">博客管理</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/admin/reader/getAll}">博客类别管理</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/admin/record/getAll}">评论管理</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/admin/record/getAll}">用户信息管理</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/admin/record/getAll}">广告商管理</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/admin/record/getAll}">标签管理</a>
        </li>
    </ul>

    <ul class="navbar-nav" sec:authorize="hasRole('USER')">
        <li>
            <h1><a style="color: white; text-decoration: none" th:href="@{/}">图书管理系统</a></h1>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/user/book/getAll}">图书信息</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" th:href="@{/user/record/getOwnRecord}">借阅记录</a>
        </li>
    </ul>
    <div class="text-white" style="font-size: medium; position: absolute; bottom: 30px; right: 40px">
        <div class="dropdown">
            <a aria-expanded="false" aria-haspopup="true" class="dropdown-toggle" data-toggle="dropdown"
               id="dropdownMenuButton"
               th:text="${session.name}+', 您好'"
               type="button">
            </a>
            <div aria-labelledby="dropdownMenuButton" class="dropdown-menu">
                <a class="dropdown-item" sec:authorize="hasRole('USER')" th:href="@{/user/toInfoPage}">个人信息</a>
                <a class="dropdown-item" th:href="@{/toChPwdPage}">修改密码</a>
                <a class="dropdown-item" th:href="@{/logout}">注销</a>
            </div>
        </div>
    </div>
</nav>

<!-- Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器-->
<!-- 什么栅格系统?
        Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统，随着屏幕或视口（viewport）尺寸的增加，系统会自动分为最多12列。
        它包含了易于使用的预定义类，还有强大的mixin 用于生成更具语义的布局。
-->
<!-- class="container"  .container 类用于固定宽度并支持响应式布局的容器-->
<div class="container">
    <!-- 一个提交方式为post的表单-->
    <form class="form" method="post" style="margin-top: 40px" th:action="@{/changePassword}">
        <div class="input-group">
            <label for="oldPassword">旧密码</label>
            <!-- 这个input标签, id = "oldPassword" 绑定了一个函数,当鼠标焦点不在input标签内部,自动触发-->
            <!--所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;-->
            <input class="form-control is-valid" id="oldPassword" name="oldPassword" type="text">
            <!-- display: none 表示 span元素不会被显示-->
            <span class="invalid-feedback" id="errorPwd" style="display: none">
                密码错误！
            </span>
        </div>
        <div class="input-group">
            <label for="newPassword">新密码</label>
            <input class="form-control" id="newPassword" name="newPassword" type="text">
            <span class="invalid-feedback" id="emptyPwd" style="display: none">
                密码不能为空！
            </span>
        </div>
        <div class="input-group">
            <label for="checkPassword">确认密码</label>
            <input class="form-control is-invalid" id="checkPassword" name="checkPassword" type="text">
            <span class="invalid-feedback" id="errorChecked" style="display: none">
                两次输入密码不一致！
            </span>
        </div>
        <input class="btn btn-outline-primary btn-lg" style="margin-top: 20px" type="submit" value="修    改">
        <a class="btn btn-outline-secondary btn-lg" style="margin-left: 40px; margin-top: 20px" th:href="@{/}">返&nbsp;&nbsp;&nbsp;&nbsp;回</a>
    </form>
</div>

<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script>
    // $(function () {
    //     // 在js方法中$('#id').blur();可以达到失去焦点刷新提醒的功能
    //     // 一般我们都是失去焦点联动方法使用的，$('#id').blur(function(){ })；
    //     $("#oldPassword").blur(
    //         function () {
    //             $.post("/checkPassword",
    //                 {
    //                     password: $(this).val()
    //                 },
    //                 function (data) {
    //                     if (data == "0") {
    //                         //  jQuery中 removeClass()与addClass方法,教学链接
    //                         //  https://www.w3school.com.cn/jquery/attributes_removeclass.asp
    //                         // removeClass() 方法从被选元素移除一个或多个类
    //                         // 表示移除 id="oldPassword" 其中class="is-valid"
    //                         // addClass() 方法向被选元素添加一个或多个类。
    //                         // 表示添加 id="oldPassword" 其中class="is-invalid"
    //                         $("#oldPassword").removeClass("is-valid");
    //                         $("#oldPassword").addClass("is-invalid");
    //                         // .show() 在JQuery里解释是显示隐藏的匹配元素
    //                         // 如果选择的元素是可见的，这个方法将不会改变任何东西。
    //                         // 无论这个元素是通过hide()方法隐藏的还是在CSS里设置了display:none;，这个方法都将有效。
    //                         // 表示显示 id="errorPwd" 的<span>标签
    //                         $("#errorPwd").show();
    //                     } else {
    //                         $("#oldPassword").removeClass("is-invalid");
    //                         $("#oldPassword").addClass("is-valid");
    //                         $("#errorMsg").hide();
    //                     }
    //                 })
    //         }
    //     );
    //     $("#newPassword").blur(function () {
    //         if ($("#newPassword").val() == '') {
    //             $("#newPassword").removeClass("is-valid");
    //             $("#newPassword").addClass("is-invalid");
    //             $("#emptyPwd").show();
    //         } else {
    //             $("#newPassword").removeClass("is-invalid");
    //             $("#newPassword").addClass("is-valid");
    //             $("#emptyPwd").hide();
    //         }
    //         if ($("#checkPassword").val() != $("#newPassword").val()) {
    //             $("#checkPassword").removeClass("is-valid");
    //             $("#checkPassword").addClass("is-invalid");
    //             $("#errorChecked").show();
    //         } else {
    //             if ($("#checkPassword").val() == '') {
    //                 $("#checkPassword").removeClass("is-valid");
    //                 $("#checkPassword").removeClass("is-invalid");
    //                 $("#errorChecked").hide();
    //             } else {
    //                 $("#checkPassword").removeClass("is-invalid");
    //                 $("#checkPassword").addClass("is-valid");
    //                 $("#errorChecked").hide();
    //             }
    //         }
    //     });
    //     $("#checkPassword").blur(function () {
    //         if ($("#checkPassword").val() != $("#newPassword").val()) {
    //             $("#checkPassword").removeClass("is-valid");
    //             $("#checkPassword").addClass("is-invalid");
    //             $("#errorChecked").show();
    //         } else {
    //             if ($("#checkPassword").val() == '') {
    //                 $("#checkPassword").removeClass("is-valid");
    //                 $("#checkPassword").removeClass("is-invalid");
    //                 $("#errorChecked").hide();
    //             } else {
    //                 $("#checkPassword").removeClass("is-invalid");
    //                 $("#checkPassword").addClass("is-valid");
    //                 $("#errorChecked").hide();
    //             }
    //         }
    //     })
    // });
</script>
</body>
</html>